Code

    
#include <FastLED.h>

#define LED_PIN 3
#define NUM_LEDS 30
#define BRIGHTNESS 255
#define LED_TYPE WS2811
#define COLOR_ORDER RGB
CRGB leds[NUM_LEDS];

// Pins definieren
const int trigPin = 9;     // Trig-Pin des Ultraschallsensors
const int echoPin = 10;    // Echo-Pin des Ultraschallsensors

// Variablen für die Entfernungsmessung
long duration;
int distance;

void setup() {
  // Pins initialisieren
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // Serielle Kommunikation starten (optional, für Debugging)
  Serial.begin(9600);

  FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);

  // LEDs ausschalten (initialisieren)
  fill_solid(leds, NUM_LEDS, CRGB::Black);
  FastLED.show();
}

void loop() {
  // Ultraschallimpuls senden
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Echo-Zeit messen
  duration = pulseIn(echoPin, HIGH);

  // Entfernung in cm berechnen
  distance = duration * 0.034 / 2;

  // Debugging: Entfernung ausgeben (optional)
  Serial.println("Entfernung: " + String(distance) + " cm");

  if (distance > 200) {
    // Alle LEDs blinken langsam in Rot
    fill_solid(leds, NUM_LEDS, CRGB::Red);
    FastLED.show();
    delay(500); // Langsames Blinken
    fill_solid(leds, NUM_LEDS, CRGB::Black);
    FastLED.show();
    delay(500);
  } else if (distance <= 200 && distance > 100) {
    // Alle LEDs blinken schneller in Rot
    fill_solid(leds, NUM_LEDS, CRGB::Red);
    FastLED.show();
    delay(100); // Schnelleres Blinken
    fill_solid(leds, NUM_LEDS, CRGB::Black);
    FastLED.show();
    delay(100);
  } else {
    // LEDs leuchten nacheinander schnell in Rot
    for (int i = 0; i < NUM_LEDS; i++) {
      leds[i] = CRGB::Red;  // LED auf Rot setzen
      FastLED.show();
      delay(50);            // Kurze Verzögerung pro LED
      leds[i] = CRGB::Black; // LED ausschalten
    }
  }
}